[INFO] cloning repository https://github.com/h3r2tic/grui
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/h3r2tic/grui" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fh3r2tic%2Fgrui", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fh3r2tic%2Fgrui'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f0171e7741b7082327c18210573a1a2e94f77f88
[INFO] fixing h3r2tic/grui against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fh3r2tic%2Fgrui" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/h3r2tic/grui
[INFO] finished tweaking git repo https://github.com/h3r2tic/grui
[INFO] tweaked toml for git repo https://github.com/h3r2tic/grui written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/h3r2tic/grui on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/h3r2tic/grui already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168
[INFO] running `Command { std: "docker" "start" "cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Compiling libc v0.2.62
[INFO] [stderr]    Compiling autocfg v0.1.6
[INFO] [stderr]    Compiling cc v1.0.41
[INFO] [stderr]    Compiling cfg-if v0.1.9
[INFO] [stderr]    Compiling proc-macro2 v1.0.2
[INFO] [stderr]    Compiling memchr v2.2.1
[INFO] [stderr]    Compiling getrandom v0.1.11
[INFO] [stderr]    Compiling rand_core v0.3.1
[INFO] [stderr]    Compiling log v0.4.8
[INFO] [stderr]    Compiling rand_jitter v0.1.4
[INFO] [stderr]    Compiling syn v1.0.5
[INFO] [stderr]    Compiling bitflags v1.1.0
[INFO] [stderr]    Compiling typenum v1.11.2
[INFO] [stderr]    Compiling byteorder v1.3.2
[INFO] [stderr]    Compiling string_cache_shared v0.3.0
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling serde v1.0.99
[INFO] [stderr]    Compiling xml-rs v0.7.0
[INFO] [stderr]    Compiling rand_xorshift v0.1.1
[INFO] [stderr]    Compiling rand_hc v0.1.0
[INFO] [stderr]    Compiling rand_isaac v0.1.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.5
[INFO] [stderr]    Compiling rand_pcg v0.1.2
[INFO] [stderr]    Compiling rand_chacha v0.1.1
[INFO] [stderr]    Compiling rand v0.6.5
[INFO] [stderr]     Checking token_store v0.1.2
[INFO] [stderr]    Compiling khronos_api v2.2.0
[INFO] [stderr]    Compiling byte-tools v0.3.1
[INFO] [stderr]    Compiling aho-corasick v0.7.6
[INFO] [stderr]    Compiling thread_local v0.3.6
[INFO] [stderr]    Compiling pkg-config v0.3.15
[INFO] [stderr]    Compiling regex-syntax v0.6.11
[INFO] [stderr]    Compiling num-traits v0.2.8
[INFO] [stderr]    Compiling rand_os v0.1.3
[INFO] [stderr]    Compiling dirs v1.0.5
[INFO] [stderr]     Checking c2-chacha v0.2.2
[INFO] [stderr]    Compiling block-padding v0.1.4
[INFO] [stderr]     Checking memmap v0.6.2
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]    Compiling term v0.5.2
[INFO] [stderr]    Compiling strsim v0.9.2
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.3
[INFO] [stderr]    Compiling fixedbitset v0.1.9
[INFO] [stderr]    Compiling opaque-debug v0.2.3
[INFO] [stderr]    Compiling fake-simd v0.1.2
[INFO] [stderr]    Compiling either v1.5.2
[INFO] [stderr]     Checking remove_dir_all v0.5.2
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling ordermap v0.3.5
[INFO] [stderr]    Compiling bit-vec v0.5.1
[INFO] [stderr]    Compiling gl_generator v0.13.1
[INFO] [stderr]     Checking rand_chacha v0.2.1
[INFO] [stderr]    Compiling itertools v0.8.0
[INFO] [stderr]    Compiling generic-array v0.12.3
[INFO] [stderr]     Checking rand v0.7.0
[INFO] [stderr]    Compiling x11-dl v2.18.4
[INFO] [stderr]    Compiling quote v1.0.2
[INFO] [stderr]    Compiling digest v0.8.1
[INFO] [stderr]    Compiling block-buffer v0.7.3
[INFO] [stderr]    Compiling libloading v0.5.2
[INFO] [stderr]    Compiling nanovg-sys v1.0.2
[INFO] [stderr]    Compiling bit-set v0.5.1
[INFO] [stderr]    Compiling atty v0.2.13
[INFO] [stderr]    Compiling sha2 v0.8.0
[INFO] [stderr]    Compiling ascii-canvas v2.0.0
[INFO] [stderr]    Compiling ena v0.13.0
[INFO] [stderr]    Compiling wayland-scanner v0.12.5
[INFO] [stderr]    Compiling phf_generator v0.7.24
[INFO] [stderr]    Compiling string_cache_codegen v0.4.2
[INFO] [stderr]    Compiling gl_generator v0.9.0
[INFO] [stderr]    Compiling diff v0.1.11
[INFO] [stderr]     Checking dlib v0.4.1
[INFO] [stderr]    Compiling petgraph v0.4.13
[INFO] [stderr]    Compiling lalrpop-util v0.17.2
[INFO] [stderr]     Checking wayland-sys v0.12.5
[INFO] [stderr]     Checking shared_library v0.1.9
[INFO] [stderr]    Compiling gl v0.13.0
[INFO] [stderr]    Compiling wayland-client v0.12.5
[INFO] [stderr]    Compiling wayland-protocols v0.12.5
[INFO] [stderr]     Checking ucd-util v0.1.5
[INFO] [stderr]    Compiling regex v0.2.11
[INFO] [stderr]    Compiling string_cache v0.7.3
[INFO] [stderr]     Checking regex-syntax v0.5.6
[INFO] [stderr]     Checking tempfile v3.1.0
[INFO] [stderr]    Compiling glutin v0.13.1
[INFO] [stderr]     Checking aho-corasick v0.6.10
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]     Checking osmesa-sys v0.1.2
[INFO] [stderr]     Checking utf8-ranges v1.0.4
[INFO] [stderr]    Compiling regex v1.2.1
[INFO] [stderr]     Checking glam v0.7.1
[INFO] [stderr]     Checking nanovg v1.0.2
[INFO] [stderr]    Compiling serde_derive v1.0.99
[INFO] [stderr]     Checking wayland-kbd v0.13.1
[INFO] [stderr]     Checking wayland-window v0.13.3
[INFO] [stderr]     Checking winit v0.11.3
[INFO] [stderr]    Compiling docopt v1.1.0
[INFO] [stderr]    Compiling lalrpop v0.17.2
[INFO] [stderr]    Compiling grui v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating build.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/main.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 37.80s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: glutin v0.13.1, lalrpop v0.17.2, winit v0.11.3
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr] crater-edition-check: grui v0.1.0 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]    Compiling grui v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2429:5
[INFO] [stdout]      |
[INFO] [stdout] 2429 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2429 -     (__0)
[INFO] [stdout] 2429 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2440:5
[INFO] [stdout]      |
[INFO] [stdout] 2440 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2440 -     (__0)
[INFO] [stdout] 2440 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2451:5
[INFO] [stdout]      |
[INFO] [stdout] 2451 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2451 -     (__0)
[INFO] [stdout] 2451 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2429:5
[INFO] [stdout]      |
[INFO] [stdout] 2429 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2429 -     (__0)
[INFO] [stdout] 2429 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2440:5
[INFO] [stdout]      |
[INFO] [stdout] 2440 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2440 -     (__0)
[INFO] [stdout] 2440 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2451:5
[INFO] [stdout]      |
[INFO] [stdout] 2451 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2451 -     (__0)
[INFO] [stdout] 2451 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BeginHover` and `EndHover` are never constructed
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | enum WidgetEvent {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 29 |     BeginHover,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 30 |     EndHover,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WidgetEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/main.rs:645:29
[INFO] [stdout]     |
[INFO] [stdout] 576 |         context.frame((width, height), gl_window.hidpi_factor(), |frame| {
[INFO] [stdout]     |                                                                  ------- move the `impl` block outside of this closure `<unnameable>` and up 2 bodies
[INFO] [stdout] ...
[INFO] [stdout] 645 |                             impl WidgetBehaviorApi for Vec<WidgetResponse> {
[INFO] [stdout]     |                             ^^^^^-----------------^^^^^---^--------------^
[INFO] [stdout]     |                                  |                     |   |
[INFO] [stdout]     |                                  |                     |   `WidgetResponse` is not local
[INFO] [stdout]     |                                  |                     `Vec` is not local
[INFO] [stdout]     |                                  `WidgetBehaviorApi` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BeginHover` and `EndHover` are never constructed
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | enum WidgetEvent {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 29 |     BeginHover,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 30 |     EndHover,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WidgetEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/main.rs:645:29
[INFO] [stdout]     |
[INFO] [stdout] 576 |         context.frame((width, height), gl_window.hidpi_factor(), |frame| {
[INFO] [stdout]     |                                                                  ------- move the `impl` block outside of this closure `<unnameable>` and up 2 bodies
[INFO] [stdout] ...
[INFO] [stdout] 645 |                             impl WidgetBehaviorApi for Vec<WidgetResponse> {
[INFO] [stdout]     |                             ^^^^^-----------------^^^^^---^--------------^
[INFO] [stdout]     |                                  |                     |   |
[INFO] [stdout]     |                                  |                     |   `WidgetResponse` is not local
[INFO] [stdout]     |                                  |                     `Vec` is not local
[INFO] [stdout]     |                                  `WidgetBehaviorApi` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 39.18s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: glutin v0.13.1, lalrpop v0.17.2, winit v0.11.3
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]     Checking grui v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/main.rs from 2021 edition to 2024
[INFO] [stderr] error: errors present after applying fixes to crate `grui`
[INFO] [stderr]  --> src/main.rs
[INFO] [stderr]   = cause: warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/main.rs:290:11
[INFO] [stderr]                |
[INFO] [stderr]            281 |     let mut f = File::open("hello.grui")?;
[INFO] [stderr]                |         -----
[INFO] [stderr]                |         |
[INFO] [stderr]                |         `f` calls a custom destructor
[INFO] [stderr]                |         `f` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            287 |     let ws_re = Regex::new(r"//[^\n]*").unwrap();
[INFO] [stderr]                |         -----
[INFO] [stderr]                |         |
[INFO] [stderr]                |         `ws_re` calls a custom destructor
[INFO] [stderr]                |         `ws_re` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            290 |     match grammar::MainParser::new().parse(&contents) {
[INFO] [stderr]                |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |           |
[INFO] [stderr]                |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |           up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            297 | }
[INFO] [stderr]                | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stderr]                |
[INFO] [stderr]            134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `f` invokes this custom destructor
[INFO] [stderr]               --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stderr]            note: `ws_re` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stderr]                |
[INFO] [stderr]            134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]                = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/main.rs:599:34
[INFO] [stderr]                |
[INFO] [stderr]            581 |             let mut ui_top_level = UiNode::new(Widget::Vertical);
[INFO] [stderr]                |                 ----------------
[INFO] [stderr]                |                 |
[INFO] [stderr]                |                 `ui_top_level` calls a custom destructor
[INFO] [stderr]                |                 `ui_top_level` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            592 |             let gui_ast = do_parse_ui_stuff();
[INFO] [stderr]                |                 -------
[INFO] [stderr]                |                 |
[INFO] [stderr]                |                 `gui_ast` calls a custom destructor
[INFO] [stderr]                |                 `gui_ast` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            599 |             if let Ok(gui_ast) = do_parse_ui_stuff() {
[INFO] [stderr]                |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |                                  |
[INFO] [stderr]                |                                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |                                  up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            755 |         });
[INFO] [stderr]                |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]                = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stderr]                = note: `ui_top_level` may invoke a custom destructor because it contains a trait object
[INFO] [stderr]                = note: `gui_ast` may invoke a custom destructor because it contains a trait object
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0596]: cannot borrow data in an index of `Vec<FlattenedWidgetNode<'_>>` as mutable
[INFO] [stderr]               --> src/main.rs:653:52
[INFO] [stderr]                |
[INFO] [stderr]            653 | ...                   if let Widget::Generic(w) = flat_widgets[*wi].widget {
[INFO] [stderr]                |                                              ^ cannot borrow as mutable
[INFO] [stderr]                |
[INFO] [stderr]                = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `Vec<FlattenedWidgetNode<'_>>`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 1 previous error; 2 warnings emitted
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            For more information about this error, try `rustc --explain E0596`.
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/main.rs:290:11
[INFO] [stdout]     |
[INFO] [stdout] 281 |     let mut f = File::open("hello.grui")?;
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `f` calls a custom destructor
[INFO] [stdout]     |         `f` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 287 |     let ws_re = Regex::new(r"//[^\n]*").unwrap();
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `ws_re` calls a custom destructor
[INFO] [stdout]     |         `ws_re` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 290 |     match grammar::MainParser::new().parse(&contents) {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |           up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 297 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `f` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `ws_re` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> src/main.rs:653:52
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                                              ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/main.rs:653:36
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]     = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 653 -                             if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout] 653 +                             if let Widget::Generic(w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/main.rs:599:34
[INFO] [stdout]     |
[INFO] [stdout] 581 |             let mut ui_top_level = UiNode::new(Widget::Vertical);
[INFO] [stdout]     |                 ----------------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `ui_top_level` calls a custom destructor
[INFO] [stdout]     |                 `ui_top_level` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 592 |             let gui_ast = do_parse_ui_stuff();
[INFO] [stdout]     |                 -------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `gui_ast` calls a custom destructor
[INFO] [stdout]     |                 `gui_ast` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 599 |             if let Ok(gui_ast) = do_parse_ui_stuff() {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                  up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 755 |         });
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `ui_top_level` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `gui_ast` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: errors present after applying fixes to crate `grui`
[INFO] [stderr]  --> src/main.rs
[INFO] [stderr]   = cause: warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/main.rs:290:11
[INFO] [stderr]                |
[INFO] [stderr]            281 |     let mut f = File::open("hello.grui")?;
[INFO] [stderr]                |         -----
[INFO] [stderr]                |         |
[INFO] [stderr]                |         `f` calls a custom destructor
[INFO] [stderr]                |         `f` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            287 |     let ws_re = Regex::new(r"//[^\n]*").unwrap();
[INFO] [stderr]                |         -----
[INFO] [stderr]                |         |
[INFO] [stderr]                |         `ws_re` calls a custom destructor
[INFO] [stderr]                |         `ws_re` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            290 |     match grammar::MainParser::new().parse(&contents) {
[INFO] [stderr]                |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |           |
[INFO] [stderr]                |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |           up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            297 | }
[INFO] [stderr]                | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stderr]                |
[INFO] [stderr]            134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `f` invokes this custom destructor
[INFO] [stderr]               --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stderr]            note: `ws_re` invokes this custom destructor
[INFO] [stderr]               --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stderr]                |
[INFO] [stderr]            134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stderr]                | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]                = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]               --> src/main.rs:599:34
[INFO] [stderr]                |
[INFO] [stderr]            581 |             let mut ui_top_level = UiNode::new(Widget::Vertical);
[INFO] [stderr]                |                 ----------------
[INFO] [stderr]                |                 |
[INFO] [stderr]                |                 `ui_top_level` calls a custom destructor
[INFO] [stderr]                |                 `ui_top_level` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            592 |             let gui_ast = do_parse_ui_stuff();
[INFO] [stderr]                |                 -------
[INFO] [stderr]                |                 |
[INFO] [stderr]                |                 `gui_ast` calls a custom destructor
[INFO] [stderr]                |                 `gui_ast` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            599 |             if let Ok(gui_ast) = do_parse_ui_stuff() {
[INFO] [stderr]                |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                |                                  |
[INFO] [stderr]                |                                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                |                                  up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]            755 |         });
[INFO] [stderr]                |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                |
[INFO] [stderr]                = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stderr]                = note: `ui_top_level` may invoke a custom destructor because it contains a trait object
[INFO] [stderr]                = note: `gui_ast` may invoke a custom destructor because it contains a trait object
[INFO] [stderr]                = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                = warning: this changes meaning in Rust 2024
[INFO] [stderr]                = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error[E0596]: cannot borrow data in an index of `Vec<FlattenedWidgetNode<'_>>` as mutable
[INFO] [stderr]               --> src/main.rs:653:52
[INFO] [stderr]                |
[INFO] [stderr]            653 | ...                   if let Widget::Generic(w) = flat_widgets[*wi].widget {
[INFO] [stderr]                |                                              ^ cannot borrow as mutable
[INFO] [stderr]                |
[INFO] [stderr]                = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `Vec<FlattenedWidgetNode<'_>>`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 1 previous error; 2 warnings emitted
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            For more information about this error, try `rustc --explain E0596`.
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/main.rs:290:11
[INFO] [stdout]     |
[INFO] [stdout] 281 |     let mut f = File::open("hello.grui")?;
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `f` calls a custom destructor
[INFO] [stdout]     |         `f` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 287 |     let ws_re = Regex::new(r"//[^\n]*").unwrap();
[INFO] [stdout]     |         -----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `ws_re` calls a custom destructor
[INFO] [stdout]     |         `ws_re` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 290 |     match grammar::MainParser::new().parse(&contents) {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |           up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 297 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `f` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `ws_re` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/thread_local-0.3.6/src/lib.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl<T: ?Sized + Send> Drop for ThreadLocal<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> src/main.rs:653:52
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                                              ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/main.rs:653:36
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]     = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 653 -                             if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout] 653 +                             if let Widget::Generic(w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/main.rs:599:34
[INFO] [stdout]     |
[INFO] [stdout] 581 |             let mut ui_top_level = UiNode::new(Widget::Vertical);
[INFO] [stdout]     |                 ----------------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `ui_top_level` calls a custom destructor
[INFO] [stdout]     |                 `ui_top_level` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 592 |             let gui_ast = do_parse_ui_stuff();
[INFO] [stdout]     |                 -------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `gui_ast` calls a custom destructor
[INFO] [stdout]     |                 `gui_ast` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 599 |             if let Ok(gui_ast) = do_parse_ui_stuff() {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                  up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 755 |         });
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `ui_top_level` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `gui_ast` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.92s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: glutin v0.13.1, lalrpop v0.17.2, winit v0.11.3
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr] crater-edition-check: grui v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]    Compiling grui v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2429:5
[INFO] [stdout]      |
[INFO] [stdout] 2429 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2429 -     (__0)
[INFO] [stdout] 2429 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2440:5
[INFO] [stdout]      |
[INFO] [stdout] 2440 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2440 -     (__0)
[INFO] [stdout] 2440 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2451:5
[INFO] [stdout]      |
[INFO] [stdout] 2451 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2451 -     (__0)
[INFO] [stdout] 2451 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2429:5
[INFO] [stdout]      |
[INFO] [stdout] 2429 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2429 -     (__0)
[INFO] [stdout] 2429 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2440:5
[INFO] [stdout]      |
[INFO] [stdout] 2440 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2440 -     (__0)
[INFO] [stdout] 2440 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> /opt/rustwide/target/debug/build/grui-a52476a88d4a4528/out/grammar.rs:2451:5
[INFO] [stdout]      |
[INFO] [stdout] 2451 |     (__0)
[INFO] [stdout]      |     ^   ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 2451 -     (__0)
[INFO] [stdout] 2451 +     __0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/main.rs:653:52
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                                              ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/main.rs:653:36
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 653 -                             if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout] 653 +                             if let Widget::Generic(w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `grui` (bin "grui") due to 1 previous error; 3 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/main.rs:653:52
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                                              ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/main.rs:653:36
[INFO] [stdout]     |
[INFO] [stdout] 653 | ...                   if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 653 -                             if let Widget::Generic(ref mut w) = flat_widgets[*wi].widget {
[INFO] [stdout] 653 +                             if let Widget::Generic(w) = flat_widgets[*wi].widget {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `grui` (bin "grui" test) due to 1 previous error; 3 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168", kill_on_drop: false }`
[INFO] [stdout] cfff1e1ac4df6d398e7842b9f0eb1dcf17d474a3e6784d9fac86c54899c9f168
